﻿using System.Text;
using Asistente.Model.Representation;
using Asistente.Model.General;

namespace Asistente.Model.IFPUG
{
    //Las entidades generan Funciones de datos, esto se representa con los objetos transformed
    //Entity que vinculan una entidad, con su correspondiente transformacion en funcion de dato.

    public class TransformedEntity : IMeasurable
    {
        public Entity Entity { get; set; }
        public DataFunction DataFunction { get; set; }
        public int Ufp { get; set; }

        public TransformedEntity() 
        {
            DataFunction = new DataFunction();
        }

        public void AddDet(int det)
        {
            DataFunction.Det += det;
        }

        public void AddRet(int ret)
        {
            DataFunction.Ret += ret;
        }

        //La entidad transformada se mide midiendo la funcion de datos que genra.
        public int Measure()
        {
            //Se mide la función de datos
            Ufp = DataFunction.Measure();
            return Ufp;
        }

        public override string ToString()
        {
            StringBuilder content = new StringBuilder();
            content.Append("\t" + Entity.Name);
            content.Append("\t" + DataFunction.ToHtml());
            content.Append("\t" + Ufp);
            return content.ToString();
        }

        internal string ToHtml()
        {
            StringBuilder content = new StringBuilder();
            content.Append("<td>");
            content.Append(Entity.Name);
            content.Append("</td>");
            content.Append(DataFunction.ToString());
            content.Append("<td>");
            content.Append(Ufp);
            content.Append("</td>");
            return content.ToString();
        }
    }
}
